/*
 * @lc app=leetcode.cn id=5 lang=golang
 *
 * [5] 最长回文子串
 */

// @lc code=start
func longestPalindrome(str string) string {
	l := len(str)
	// 最大长度
	var maxLen, rs, re int = 1, 0, 1
	var s, e int
	for i := 0; i < l-1; i++ {
		// 考虑相邻字符相同的情况, 如果字符相邻, 那么s, e分别为相邻字符最左边和最右边坐标
		s = i
		for ; i < l-1 && str[i] == str[i+1]; i++ {
		}
		e = i
		// s往左移动, e往右移动
		for s >= 0 && e < l {
			if str[s] != str[e] {
				break
			}
			s--
			e++
		}
		// 移动完成之后比对是否比最大记录大
		if e-s-1 > maxLen {
			rs = s + 1
			re = e
			maxLen = e - s - 1
		}
	}
	return str[rs:re]
}

// @lc code=end

